package com.hyt.it.ogt.pj.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.pj.model.entity.PaperItem;
import com.hyt.it.ogt.pj.model.vo.MarkDataVo;
import com.hyt.it.ogt.pj.model.vo.PaperItemVo;

/**
 * <p>
 * 题目表 服务类
 * </p>
 *
 * @author qiaozj
 * @since 2020-07-09
 */
public interface IPaperItemService extends IService<PaperItem> {

    List<PaperItemVo> selectMarkItem(String projectId, String subjectId, String paperId, String encodeId,String taskId);

    List<PaperItem> selectByPaperId(String paperId);

    /****
     * 获取项目列表下面所有的客观题列表
     * @param projectIds
     * @return
     */
    Map<String,List<PaperItem>> selectAllObjectiveItemsByProjectIds(List<String> projectIds);

    /**
     * 获取列表考生的考试试卷中带主观题的大题列表
     * @param projectId
     * @param subjectId
     * @param paperId
     * @param encodeId
     * @return
     */
    List<PaperItemVo> selectBlockList(String taskId,String projectId, String subjectId, String paperId, String encodeId, String userId);

    /**
     * 获取评卷列表数据
     * @return
     */
    MarkDataVo selectPaperItemVoList(String projectId, String subjectId, String currUserId, String batchId, String placeId, String roomId) throws Exception;

    /**
     * 获取当前的小题信息
     * @param currUserId
     * @param projectId
     * @param subjectId
     * @param itemId
     * @return
     */
    PaperItemVo getCurrPaperItemInfo(String currUserId, String projectId, String subjectId, String itemId)  throws Exception;

    /**
     * 获取主观题分
     * @param projectId
     * @param subjectId
     * @return
     */
    BigDecimal getPaperSubjectiveScore(String projectId, String subjectId);

    /**
     * 获取主观题
     * @param projectId
     * @param subjectId
     * @return
     */
    List<PaperItem> getPaperItemSubjective(String projectId, String subjectId);

    /**
     * 获取考生总人数和已评人数
     * @param currUserId
     * @return
     */
    Integer getStudentFinishStuNumer(String currUserId, String itemId);
    
}
